﻿using System;
using System.Collections.Generic;
using System.Text;
using AudioPlayer.Plugin.Storage;

namespace AudioPlayer.Plugin.Tags {
	public interface ITagProvider : IPlugin {

		/// <summary>
		/// Gets the supported formats.
		/// Example: song.<c>mp3</c>, song.<c>ogg</c>
		/// </summary>
		/// <value>The Supported formats.</value>
		IList<string> Formats { get; }
		/// <summary>
		/// Gets the supported mimetypes.
		/// </summary>
		/// <value>The mimetypes.</value>
		IList<string> Mimetypes { get; }

		/// <summary>
		/// Provides song information, from url
		/// </summary>
		/// <param name="url">The Url, can be file, or web stream, etc.</param>
		/// <returns>ISong, if is ok, or NULL.</returns>
		ISong Read(string url);

		/// <summary>
		/// Updates the information of the song.
		/// </summary>
		/// <param name="song">The Song.</param>
		void Save(ISong song);
	}
}
